Extension point chains
Documentation
Operation Chain registration
Contribution Descriptors
- Class: org.nuxeo.ecm.automation.core.OperationChainContribution
Existing Contributions
Contributions are presented in the same order as the registration order on this extension point. This order is displayed before the contribution name, in brackets.
-
<extension point="chains" target="org.nuxeo.ecm.core.operation.OperationServiceComponent"> <chain id="sendEmailToMe"> <operation id="Context.FetchDocument"/> <operation id="Notification.SendMail"> <param name="from" type="string">noreply@nuxeo.com</param> <param name="message" type="string"> <html> <head> </head> <body> You asked to send an email to your own email account. You will find files attached to this email. <br/> Original document is <a href="${docUrl}">${Document['dc:title']}</a>. <br/> Sent from Nuxeo. </body> </html> </param> <param name="subject" type="string">[Nuxeo] MailMe Service - new Binary sent</param> <param name="to" type="stringlist">expr:Fn.getEmail(Context.principal.name)</param> <param name="HTML" type="boolean">true</param> <param name="files" type="stringlist">file:content</param> <param name="viewId" type="string">view_documents</param> </operation> </chain> </extension>
-
<extension point="chains" target="org.nuxeo.ecm.core.operation.OperationServiceComponent"> <chain id="Dam.ImportInSeam"> <operation id="Dam.Import"> <param name="overwrite" type="boolean">true</param> </operation> <operation id="Seam.InitContext"/> <operation id="Seam.AddMessage"> <param name="severity" type="string">INFO</param> <param name="message" type="string">label.dam.assets.imported</param> </operation> <operation id="Seam.Refresh"/> <operation id="Seam.DestroyContext"/> </chain> <chain id="Dam.ImportWithMetaDataInSeam"> <operation id="Dam.Import"> <param name="overwrite" type="boolean">true</param> <param name="importInCurrentDocument" type="boolean">true</param> </operation> <operation id="Document.Update"> <param name="properties" type="properties">expr:Context.get("docMetaData") </param> </operation> <operation id="Seam.AddMessage"> <param name="severity" type="string">INFO</param> <param name="message" type="string">label.dam.assets.imported</param> </operation> <operation id="Seam.Refresh"/> </chain> </extension>
-
<extension point="chains" target="org.nuxeo.ecm.core.operation.OperationServiceComponent"> <chain id="blobToPDF"> <operation id="Blob.Pop"/> <operation id="Blob.ToPDF"/> </chain> </extension>
-
<extension point="chains" target="org.nuxeo.ecm.core.operation.OperationServiceComponent"> <chain id="acceptComment"> <operation id="Context.FetchDocument"/> <operation id="Comment.Moderate"> <param name="accept" type="boolean">true</param> </operation> </chain> <chain id="rejectComment"> <operation id="Context.FetchDocument"/> <operation id="Comment.Moderate"> <param name="accept" type="boolean">false</param> </operation> </chain> </extension>
-
<extension point="chains" target="org.nuxeo.ecm.core.operation.OperationServiceComponent"> <chain id="setDone"> <operation id="Document.Routing.Step.Done"/> </chain> <chain id="simpleValidate"> <operation id="Document.Routing.Resume.Step"/> </chain> <chain id="simpleRefuse"> <operation id="Document.Routing.Resume.Step"/> </chain> <chain id="simpleUndo"> <operation id="Document.Routing.BackToReady"/> </chain> <chain id="setNextStep"> <operation id="Update.NextStep.ConditionalFolder"/> </chain> <chain id="decideNextStepAndSimpleValidate"> <operation id="Update.NextStep.ConditionalFolder"> <param name="nextStepPos" type="string">expr:Context['nextStepPos']</param> </operation> <operation id="Document.Routing.Resume.Step"/> </chain> <chain id="updateCommentsOnDoc"> <operation id="Document.Routing.UpdateCommentsInfoOnDocument"/> </chain> <chain id="simpleChooseNextOption1AndDone"> <operation id="Update.NextStep.ConditionalFolder"> <param name="nextStepPos" type="string">1</param> </operation> <operation id="Document.Routing.Step.Done"/> </chain> <chain id="simpleChooseNextOption2AndDone"> <operation id="Update.NextStep.ConditionalFolder"> <param name="nextStepPos" type="string">2</param> </operation> <operation id="Document.Routing.Step.Done"/> </chain> </extension>
-
<extension point="chains" target="org.nuxeo.ecm.core.operation.OperationServiceComponent"> <chain id="downloadFilesZip"> <operation id="Context.FetchDocument"/> <operation id="Blob.GetAll"/> <operation id="Blob.CreateZip"> <param name="filename" type="string">attachments.zip </param> </operation> <operation id="Seam.DownloadFile"/> </chain> </extension>
-
<extension point="chains" target="org.nuxeo.ecm.core.operation.OperationServiceComponent"> <chain id="addCurrentDocumentToWorklist"> <operation id="Context.FetchDocument"/> <operation id="Seam.AddToWorklist"/> <operation id="Seam.AddMessage"> <param name="severity" type="string">INFO</param> <param name="message" type="string">label.document.added.to.worklist</param> </operation> </chain> </extension>
-
<extension point="chains" target="org.nuxeo.ecm.core.operation.OperationServiceComponent"> <chain id="simpleTask"> <operation id="Context.FetchDocument"/> <operation id="Workflow.CreateRoutingTask"> <param name="accept operation chain" type="string"> setTaskDone </param> <param name="reject operation chain" type="string"> setTaskDone </param> <param name="mappingProperties" type="Properties"> <property key="dc:description">StepTask:dc:description</property> <property key="nt:directive">StepTask:dc:description</property> </param> </operation> <operation id="Context.RunDocumentOperationInNewTx"> <param name="rollbackGlobalOnError" type="boolean">false</param> <param name="id" type="string">sendTaskCreatedNotificationMail</param> </operation> </chain> <chain id="followLifeCycleTransitionTask"> <operation id="Context.FetchDocument"/> <operation id="Workflow.CreateRoutingTask"> <param name="accept operation chain" type="string"> followLifeCycleTransition </param> <param name="reject operation chain" type="string"> setTaskDone </param> <param name="mappingProperties" type="Properties"> <property key="dc:description">StepTask:dc:description</property> </param> </operation> <operation id="Context.RunDocumentOperationInNewTx"> <param name="rollbackGlobalOnError" type="boolean">false</param> <param name="id" type="string">sendTaskCreatedNotificationMail</param> </operation> </chain> <chain id="publishTask"> <operation id="Context.FetchDocument"/> <operation id="Workflow.CreateRoutingTask"> <param name="accept operation chain" type="string"> publishDocument </param> <param name="reject operation chain" type="string"> setTaskDone </param> <param name="mappingProperties" type="Properties"> <property key="dc:description">StepTask:dc:description</property> </param> </operation> <operation id="Context.RunDocumentOperationInNewTx"> <param name="rollbackGlobalOnError" type="boolean">false</param> <param name="id" type="string">sendTaskCreatedNotificationMail</param> </operation> </chain> <chain id="conditionalTask"> <operation id="Context.FetchDocument"/> <operation id="Workflow.CreateRoutingTask"> <param name="accept operation chain" type="string"> evaluateCondition </param> <param name="reject operation chain" type="string"> setTaskDone </param> <param name="mappingProperties" type="Properties"> <property key="dc:description">StepTask:dc:description</property> </param> </operation> <operation id="Context.RunDocumentOperationInNewTx"> <param name="rollbackGlobalOnError" type="boolean">false</param> <param name="id" type="string">sendTaskCreatedNotificationMail</param> </operation> </chain> <chain id="setTaskDone"> <operation id="Document.Routing.SetRunningStepFromTask"> <param name="mappingComments" type="boolean">true</param> </operation> <operation id="Document.Routing.Resume.Step"/> </chain> <chain id="undoRunningTask"> <operation id="Workflow.RemoveRoutingTask"/> <operation id="Document.Routing.BackToReady"/> </chain> <chain id="followLifeCycleTransition"> <operation id="Context.FetchDocument"/> <operation id="Document.Routing.SetRunningStepFromTask"/> <operation id="Document.SetLifeCycle"> <param name="value" type="string">expr:Context["document.routing.step"].getDocument().getPropertyValue("tkst:directive")</param> </operation> <operation id="Document.Routing.Resume.Step"/> </chain> <chain id="publishDocument"> <operation id="Context.FetchDocument"/> <operation id="Document.Routing.SetRunningStepFromTask"/> <operation id="Document.Publish"> <param name="target" type="string">expr:Context["document.routing.step"].getDocument().getPropertyValue("tkst:directive")</param> </operation> <operation id="Document.Routing.Resume.Step"/> </chain> <chain id="evaluateCondition"> <operation id="Context.FetchDocument"/> <operation id="Document.Routing.SetRunningStepFromTask"/> <operation id="Document.Routing.EvaluateCondition"> <param name="subject" type="string">expr:Context["document.routing.step"].getDocument().getPropertyValue("ctkst:subject")</param> <param name="operator" type="string">expr:Context["document.routing.step"].getDocument().getPropertyValue("ctkst:operator")</param> <param name="value" type="string">expr:Context["document.routing.step"].getDocument().getPropertyValue("ctkst:value")</param> </operation> <operation id="Update.NextStep.ConditionalFolder"> <param name="nextStepPos" type="string">expr:Context['nextStepPos']</param> </operation> <operation id="Document.Routing.Resume.Step"/> </chain> <chain id="sendTaskCreatedNotificationMail"> <operation id="Notification.SendMail"> <param name="from" type="string">Administrator@nuxeo.com</param> <param name="message" type="string">template:routingTaskAssigned</param> <param name="subject" type="string">expr:Context["document.routing.step"].getDocument().getPropertyValue("dc:title")</param> <param name="to" type="stringlist">expr:Fn.getEmails(Context["document.routing.task.actors"])</param> <param name="HTML" type="boolean">false</param> </operation> </chain> </extension>
-
<extension point="chains" target="org.nuxeo.ecm.core.operation.OperationServiceComponent"> <chain id="ImportWorklist"> <operation id="Seam.InitContext"/> <operation id="UserWorkspace.CreateDocumentFromBlob"/> <operation id="Document.Save"/> <operation id="Seam.AddToWorklist"/> <operation id="Seam.DestroyContext"/> </chain> <chain id="ImportClipboard"> <operation id="Seam.InitContext"/> <operation id="UserWorkspace.CreateDocumentFromBlob"/> <operation id="Document.Save"/> <operation id="Seam.AddToClipboard"/> <operation id="Seam.DestroyContext"/> </chain> <chain id="SeamActions.GET"> <operation id="Seam.RunOperation"> <param name="id" type="string">Actions.GET</param> </operation> </chain> <chain id="FileManager.ImportWithMetaDataInSeam"> <operation id="FileManager.Import"> <param name="overwite" type="boolean">true</param> </operation> <operation id="Document.Update"> <param name="properties" type="properties">expr:Context.get("docMetaData") </param> </operation> <operation id="Seam.RunOperation"> <param name="id" type="string">Seam.Refresh</param> </operation> </chain> <chain id="FileManager.ImportInSeam"> <operation id="FileManager.Import"> <param name="overwite" type="boolean">true</param> </operation> <operation id="Seam.RunOperation"> <param name="id" type="string">Seam.Refresh</param> </operation> </chain> </extension>
-
<extension point="chains" target="org.nuxeo.ecm.core.operation.OperationServiceComponent"> <chain id="VersionAndAttachFile"> <operation id="Blob.PushList"> </operation> <operation id="Document.Fetch"> <param name="value" type="string">expr:Context.get("currentDocument")</param> </operation> <operation id="Document.CheckIn"> <param name="version" type="string">minor</param> <param name="comment" type="string">Automatic checkin before file update</param> </operation> <operation id="Context.SetInputAsVar"> <param name="name" type="string">newDocument</param> </operation> <operation id="Context.SetVar"> <param name="name" type="string">currentDocument</param> <param name="value" type="string">expr:Context.get("newDocument").id</param> </operation> <operation id="Blob.PopList"> </operation> <operation id="BlobHolder.Attach"> <param name="useMainBlob" type="boolean">true</param> </operation> </chain> <chain id="AttachFiles"> <operation id="BlobHolder.Attach"> <param name="useMainBlob" type="boolean">false</param> </operation> </chain> <chain id="VersionAndAttachFiles"> <operation id="Blob.PushList"> </operation> <operation id="Document.Fetch"> <param name="value" type="string">expr:Context.get("currentDocument")</param> </operation> <operation id="Document.CheckIn"> <param name="version" type="string">minor</param> <param name="comment" type="string">Automatic checkin before files update</param> </operation> <operation id="Context.SetInputAsVar"> <param name="name" type="string">newDocument</param> </operation> <operation id="Context.SetVar"> <param name="name" type="string">currentDocument</param> <param name="value" type="string">expr:Context.get("newDocument").id</param> </operation> <operation id="Blob.PopList"> </operation> <operation id="BlobHolder.Attach"> <param name="useMainBlob" type="boolean">false</param> </operation> </chain> <chain id="FileManager.ImportWithMetaData"> <operation id="FileManager.Import"> <param name="overwite" type="boolean">true</param> </operation> <operation id="Document.Update"> <param name="properties" type="properties">expr:Context.get("docMetaData")</param> </operation> </chain> </extension>
-
<extension point="chains" target="org.nuxeo.ecm.core.operation.OperationServiceComponent"> <chain id="NRD-AC-PR-ChooseParticipants-Output"> <operation id="Context.FetchDocument"/> <operation id="Context.RunOperation"> <param name="id" type="string">NRD-AC-PR-LockDocument</param> <param name="isolate" type="boolean">false</param> </operation> <operation id="Context.SetWorkflowVar"> <param name="name" type="string">initiatorComment</param> <param name="value" type="object">expr:NodeVariables["comment"]</param> </operation> </chain> <chain id="NRD-AC-PR-LockDocument"> <operation id="Context.FetchDocument"/> <operation id="Auth.LoginAs"> <param name="name" type="string">expr:workflowInitiator</param> </operation> <operation id="Document.Lock"/> </chain> <chain id="NRD-AC-PR-UnlockDocument"> <operation id="Context.FetchDocument"/> <operation id="Document.Unlock"/> </chain> <chain id="NRD-AC-PR-ValidateNode-Output"> <operation id="Context.FetchDocument"/> <operation id="Context.RunOperation"> <param name="id" type="string">NRD-AC-PR-UnlockDocument</param> <param name="isolate" type="boolean">false</param> </operation> <operation id="Context.RunOperation"> <param name="id" type="string">logInAudit</param> <param name="isolate" type="boolean">false</param> </operation> </chain> <chain id="NRD-AC-PR-force-validate"> <operation id="Context.FetchDocument"/> <operation id="Auth.LoginAs"> <param name="name" type="string">expr:Context["workflowInitiator"]</param> </operation> <operation id="Audit.Log"> <param name="event" type="string">Consultation time excedeed</param> <param name="category" type="string">Review workflow</param> <param name="comment" type="string">Some consultation tasks were aborted by the system as they received no feedback message.</param> </operation> <operation id="Workflow.ResumeNodeOperation"/> </chain> <chain id="NRD-AC-PR-storeTaskInfo"> <operation id="Context.FetchDocument"/> <operation id="Context.RunScript"> <param name="script" type="string">This[0]</param> </operation> <operation id="Context.SetVar"> <param name="name" type="string">tasksInfo</param> <param name="value" type="object">expr:NodeVariables["tasks"]</param> </operation> <operation id="Context.SetVar"> <param name="name" type="string">numberNA</param> <param name="value" type="object">expr:NodeVariables["tasks"].getNumberEndedWithStatus("NA")</param> </operation> <operation id="Context.SetVar"> <param name="name" type="string">numberRejected</param> <param name="value" type="object">expr:NodeVariables["tasks"].getNumberEndedWithStatus("reject")</param> </operation> <operation id="Context.SetVar"> <param name="name" type="string">numberApproved</param> <param name="value" type="object">expr:NodeVariables["tasks"].getNumberEndedWithStatus("approve")</param> </operation> <operation id="Context.SetVar"> <param name="name" type="string">numberOfTasks</param> <param name="value" type="object">expr:NodeVariables["numberOfTasks"]</param> </operation> <operation id="Render.Document"> <param name="template" type="string">template:NRD-PR-TasksInfo</param> <param name="filename" type="string">output.ftl</param> <param name="mimetype" type="string">text/xml</param> <param name="type" type="string">ftl</param> </operation> <operation id="Context.SetWorkflowVar"> <param name="name" type="string">review_result_file</param> <param name="value" type="object">expr:This.get(0)</param> </operation> <operation id="Context.SetWorkflowVar"> <param name="name" type="string">review_result</param> <param name="value" type="object">expr:This.get(0).getString()</param> </operation> </chain> <chain id="initInitiatorComment"> <operation id="Context.RunScript"> <param name="script" type="string">if((NodeVariables["comment"] != "") AND (NodeVariables["comment"] != null)){ WorkflowVariables["initiatorComment"]= NodeVariables["comment"];}</param> </operation> </chain> <chain id="logInAudit"> <operation id="Audit.Log"> <param name="event" type="string">expr:NodeVariables["button"] =="reject"?"Document refused":"Document validated"</param> <param name="category" type="string">Review workflow</param> <param name="comment" type="string">expr:@{nodeLastActor} @{NodeVariables["button"] =="reject"?"Document refused":"validated"} the document with the following comment: @{NodeVariables["comment"]}</param> </operation> </chain> <chain id="nextAssignee"> <operation id="Context.RunScript"> <param name="script" type="string">if (NodeVariables["button"] == "validate") { WorkflowVariables["index"] = WorkflowVariables["index"] + 1; } else if (NodeVariables["button"] == "reject") { WorkflowVariables["index"] = WorkflowVariables["index"] - 1; } else if (NodeVariables["button"] == "submit") { WorkflowVariables["index"] = 0; }</param> </operation> </chain> <chain id="notifyInitiatorEndOfWorkflow"> <operation id="Context.FetchDocument"/> <operation id="Notification.SendMail"> <param name="from" type="string">expr:Env["mail.from"]</param> <param name="message" type="string">The document was approved by every participant.</param> <param name="subject" type="string">expr:@{Env["nuxeo.notification.eMailSubjectPrefix"]} Document approved</param> <param name="to" type="stringlist">expr:Fn.getEmail(workflowInitiator)</param> <param name="HTML" type="boolean">false</param> <param name="rollbackOnError" type="boolean">true</param> <param name="viewId" type="string">view_documents</param> </operation> </chain> <chain id="reinitAssigneeComment"> <operation id="Context.RunScript"> <param name="script" type="string">if((NodeVariables["comment"] != "") AND (NodeVariables["comment"] != null)){ NodeVariables["comment"]= null;}</param> </operation> </chain> <chain id="terminateWorkflow"> <operation id="Context.FetchDocument"/> <operation id="Context.RunOperation"> <param name="id" type="string">logInAudit</param> <param name="isolate" type="boolean">false</param> </operation> <operation id="Context.RunDocumentOperationInNewTx"> <param name="id" type="string">notifyInitiatorEndOfWorkflow</param> <param name="isolate" type="boolean">false</param> <param name="rollbackGlobalOnError" type="boolean">false</param> </operation> <operation id="Context.RunOperation"> <param name="id" type="string">expr:WorkflowVariables["validationOrReview"] == "validation"?"validateDocument":"voidChain"</param> <param name="isolate" type="boolean">false</param> </operation> <operation id="Audit.Log"> <param name="event" type="string">Review completed successfully</param> <param name="category" type="string">Review workflow</param> <param name="comment" type="string">All the participants of the review have approved the document.</param> </operation> </chain> <chain id="validateDocument"> <operation id="Context.FetchDocument"/> <operation id="Document.SetLifeCycle"> <param name="value" type="string">approve</param> </operation> <operation id="Document.CheckIn"> <param name="version" type="string">minor</param> <param name="comment" type="string">Automatic checkin after validation</param> </operation> </chain> <chain id="voidChain"> <operation id="Context.FetchDocument"/> </chain> </extension>
-
<extension point="chains" target="org.nuxeo.ecm.core.operation.OperationServiceComponent"> <chain id="JenkinsReportCreation"> <operation id="Context.FetchDocument"/> <operation id="Document.SetProperty"> <param name="value" type="serializable">expr:CurrentUser.name</param> <param name="xpath" type="string">jenkinsreport:reporter</param> <param name="save" type="boolean">false</param> </operation> <operation id="Document.SetProperty"> <param name="value" type="serializable">expr:@{CurrentDate.year}/@{CurrentDate.format("MM")}/@{CurrentDate.format("dd")}</param> <param name="xpath" type="string">dc:title</param> <param name="save" type="boolean">false</param> </operation> <operation id="Document.SetProperty"> <param name="value" type="serializable">expr:CurrentDate.calendar</param> <param name="xpath" type="string">jenkinsreport:report_date</param> <param name="save" type="boolean">false</param> </operation> <operation id="Document.SetProperty"> <param name="value" type="serializable">0</param> <param name="xpath" type="string">jenkinsreport:number_failed</param> <param name="save" type="boolean">false</param> </operation> <operation id="Document.SetProperty"> <param name="value" type="serializable">0</param> <param name="xpath" type="string">jenkinsreport:previous_number_failed</param> <param name="save" type="boolean">false</param> </operation> <operation id="Document.SetProperty"> <param name="value" type="serializable">0</param> <param name="xpath" type="string">jenkinsreport:previous_number_unclaimed</param> <param name="save" type="boolean">false</param> </operation> </chain> <chain id="JenkinsReportModified"> <operation id="Context.FetchDocument"/> <operation id="Context.RunScript"> <param name="script" type="string">var jobs = Document["jenkinsreport:unstable_jobs"]; nbUnclaimed = 0; foreach (job : jobs) { if (job["claimer"] == empty and job["type"] != "SUCCESS" and job["updated_type"] != "SUCCESS") { nbUnclaimed ++; } } Document["jenkinsreport:number_unclaimed"] = nbUnclaimed;</param> </operation> <operation id="Context.RunScript"> <param name="script" type="string">var jobs = Document["jenkinsreport:unstable_jobs"]; nbFailing = 0; foreach (job : jobs) { if (job["type"] != "SUCCESS" and job["updated_type"] != "SUCCESS") { nbFailing ++; } } Document["jenkinsreport:number_failed"] = nbFailing;</param> </operation> <operation id="Context.RunScript"> <param name="script" type="string">var jobs = Document["jenkinsreport:unstable_jobs"]; nb = 0; foreach (job : jobs) { if (job["updated_type"] == "SUCCESS") { nb --; } else if (job["newly_failing"] == true) { nb ++; } } Document["jenkinsreport:report_trend"] = nb;</param> </operation> </chain> <chain id="JenkinsReportSendMail"> <operation id="Context.FetchDocument"/> <operation id="Document.Push"/> <operation id="Document.GetParent"/> <operation id="Context.SetVar"> <param name="name" type="string">jenkins_report_email</param> <param name="value" type="object">expr:Document.getProperty("jenkinsreports:report_email")</param> </operation> <operation id="Context.SetVar"> <param name="name" type="string">jenkins_url</param> <param name="value" type="object">expr:Document.getProperty("jenkinsreports:view_url")</param> </operation> <operation id="Document.Pull"/> <operation id="Notification.SendMail"> <param name="from" type="string">expr:CurrentUser.email</param> <param name="message" type="string">template:JenkinsReportSendMail</param> <param name="subject" type="string">expr:Jenkins Report - @{Document.title}</param> <param name="to" type="stringlist">expr:Context["jenkins_report_email"]</param> <param name="HTML" type="boolean">true</param> <param name="rollbackOnError" type="boolean">true</param> <param name="viewId" type="string">view_documents</param> </operation> <operation id="Seam.AddInfoMessage"> <param name="message" type="string">Email sent</param> </operation> </chain> <chain id="JenkinsReportsContainerCreation"> <operation id="Context.FetchDocument"/> <operation id="Document.SetProperty"> <param name="value" type="serializable">http://qa.nuxeo.org/jenkins/view/Dashboard/</param> <param name="xpath" type="string">jenkinsreports:view_url</param> <param name="save" type="boolean">false</param> </operation> <operation id="Document.SetProperty"> <param name="value" type="serializable">http://qa.nuxeo.org/jenkins/claims/</param> <param name="xpath" type="string">jenkinsreports:claim_url</param> <param name="save" type="boolean">false</param> </operation> </chain> </extension>